var express = require('express');
var router = express.Router();
var fs=require('fs')
var {resolve}=require('path')
var {sortItem}=require('../utils/utils')
/**
 * 切片的上传
 */
router.post('/upload_chunk',(req,res)=>{
    console.log('-----切片上传方法----');
    const {chunkName}=req.body
    const {chunk}=req.files
    //截取文件夹的名称
    const tempUploadDir=chunkName.slice(0,chunkName.lastIndexOf("-"))
    //拼接绝对路径
    const absoluteTempUploadDir=resolve('temp',tempUploadDir)
    const chunkFilePath=absoluteTempUploadDir+"/"+chunkName
    //判断服务器中是否存在路径，如果不存在则进入if语句
    if(!fs.existsSync(absoluteTempUploadDir)){
        //创建文件夹
        fs.mkdirSync(absoluteTempUploadDir)
    }
    //写入切片到到指定的文件下面
    fs.writeFile(chunkFilePath,chunk.data,function(err){
        if(!err){
            res.status(200).json({
                msg:'切片上传成功'
            })
        }else{
            res.status(201).json({
                msg:'切片上传失败'
            })
        }
    })
})
/**
 * 合并
 */
router.get('/upload_merge',function(req,res){
    console.log('-------切片合并---------');
    //从前端获取参数
    const {hash,suffix}=req.query
    console.log('hash',hash);
    console.log('suffix',suffix);
    //拼接上传的临时文件夹目录
    const tempUploadFileDir=resolve("temp",hash)
    //读取文件夹下的所有的切片列表
    const list=fs.readdirSync(tempUploadFileDir)
    //上传文件的目标目录
    const uploadFileDir=resolve('upload')
    
    list.sort(function(a,b){
        return sortItem(a)-sortItem(b)
    })
    
    list.forEach(chukNameFile=>{
        //读取临时文件夹下的文件
        const data=fs.readFileSync(tempUploadFileDir+"/"+chukNameFile)
        //合并到指定文件上
        fs.appendFileSync(`${uploadFileDir}/${hash}.${suffix}`,data)
        //删除文件
        fs.unlinkSync(tempUploadFileDir+"/"+chukNameFile)
    })
    //删除临时文件夹
    fs.rmdirSync(tempUploadFileDir)
    res.status(200).json({
        msg:'切片合并完毕'
    })
})
module.exports=router
